package com.innovus.doomi;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.location.LocationListener;
import com.innovus.doomi.Activities.LoginActivity;
import com.innovus.doomi.Consumir.HttpRequestTask;
import com.innovus.doomi.Consumir.SessionManager;
import com.innovus.doomi.GcmServices.QuickstartPreferences;
import com.innovus.doomi.GcmServices.RegistrationIntentService;
import com.innovus.doomi.Google.ActivityMaps;
import com.innovus.doomi.adapters.MenuSliderAdapter;
import com.innovus.doomi.db.DbProductos;
import com.innovus.doomi.fragments.CirculoFragment;
import com.innovus.doomi.fragments.EmpresaFragment;
import com.innovus.doomi.Consumir.AppConstants;
public class Principal extends ActionBarActivity implements CirculoFragment.ToolbarListener, SearchView.OnQueryTextListener, EmpresaFragment.OnBusquedaListener,GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,LocationListener /* extends Activity implements ActionBar.TabListener */
{
//private EmpresaFragment fragments= new EmpresaFragment();
private EmpresaFragment fragments = new EmpresaFragment();
private CirculoFragment circulo = new CirculoFragment() ;
SessionManager sessionManager;
private static final String LOG_TAG = "MainActivity";
private static final int ACTIVITY_RESULT_FROM_ACCOUNT_SELECTION = 2222;
// location
private GoogleApiClient googleApiClient;
private LocationRequest locationRequest;
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
private static final String TAG = "Principal";
private BroadcastReceiver mRegistrationBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
sessionManager = new SessionManager(getApplicationContext());
//agregmos el toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.activity_my_toolbar);
toolbar.setTitle("Doomi");
setSupportActionBar(toolbar);
googleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
//aqui creamos el recyclerview para el cajon de menu
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); // Assigning the RecyclerView Object to the xml View
mRecyclerView.setHasFixedSize(true); // Letting the system know that the list objects are of fixed size
MenuSliderAdapter mAdapter = new MenuSliderAdapter(AppConstants.menuCajon,AppConstants.ICONS,this); // Creating the Adapter of MyAdapter class(which we are going to see in a bit)
// And passing the titles,icons,header view name, header view email,
// and header view profile picture
mRecyclerView.setAdapter(mAdapter); // Setting the adapter to RecyclerView
mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); // Setting the layout Manager
DrawerLayout Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); // Drawer object Assigned to the view
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,Drawer,toolbar,R.string.drawer_open ,R.string.drawer_close){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
// code here will execute once the drawer is opened( As I dont want anything happened whe drawer is
// open I am not going to put anything here)
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
// Code here will execute once drawer is closed
}
}; // Drawer Toggle Object Made
Drawer.setDrawerListener(mDrawerToggle); // Drawer Listener set to the Drawer toggle
mDrawerToggle.syncState(); // Finally we set the drawer toggle sync State
FragmentManager manager = getFragmentManager();//llevar fragmnetos a nivel de cofigo
FragmentTransaction fragmentTransaccion = manager.beginTransaction();//agregar , remover , pasar cosas al fragmento
fragmentTransaccion.add(R.id.main_principal,fragments).hide(fragments);//por cada fragmento que tenga lo añado a la vista. hide()pa que no los muestre todos a lavez entnces mientras ocultalo
fragmentTransaccion.show(fragments);
fragmentTransaccion.add(R.id.main_principal,circulo).hide(circulo);
fragmentTransaccion.show(circulo).commit();//muestre el elemento cero y muestre los cambios q se han hecho
/* for(Fragment fragment: fragments){//por cada elemento de fragment obten ese fragment
fragmentTransaccion.add(R.id.main_principal,fragment).hide(fragment);//por cada fragmento que tenga lo añado a la vista. hide()pa que no los muestre todos a lavez entnces mientras ocultalo
}
fragmentTransaccion.show(fragments[0]).commit();//muestre el elemento cero y muestre los cambios q se han hecho
*/
//eliminar base de datos
DbProductos admin = new DbProductos(this,"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase(); //Create and/or open a database that will be used for reading and writing.
bd.execSQL("DELETE FROM productos ");
admin.close();
//prueba search
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
boolean sentToken = sharedPreferences.getBoolean(QuickstartPreferences.SENT_TOKEN_TO_SERVER, false);
if (sentToken) {
Log.e(LOG_TAG,"enviado al servidor");
Toast toast = Toast.makeText(context, "Enviado al servidor", Toast.LENGTH_SHORT);
toast.show();
} else {
Log.e(LOG_TAG,"no enviado ");
Toast toast = Toast.makeText(context, "ah ocurrido un error mientras se obtenia la InstanceID", Toast.LENGTH_SHORT);
toast.show();
}
}
};
if (checkPlayServices()) {
Log.e(LOG_TAG,"chekea play services");
// Start IntentService to register this application with GCM.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
new HttpRequestTask(this).execute();
}
private SearchView mSearchView;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
if(sessionManager.isLoggedIn()){
getMenuInflater().inflate(R.menu.menu_principal, menu);
}
else{
getMenuInflater().inflate(R.menu.menu_principal_login,menu);
}
MenuItem searchItem = menu.findItem(R.id.buscar_principal);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu){
menu.clear();
if(sessionManager.isLoggedIn()){
getMenuInflater().inflate(R.menu.menu_principal, menu);
}
else{
getMenuInflater().inflate(R.menu.menu_principal_login,menu);
}
MenuItem searchItem = menu.findItem(R.id.buscar_principal);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//si esta logeado aparece(cerrar sesion) si no esta logeado aparece aparece iniciarsion
if(sessionManager.isLoggedIn()){
switch (id){
case R.id.action_settings:
return true;
case R.id.action_logout:
sessionManager.logoutUser();
Toast.makeText(this, "Cerraste sesion", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}else {
switch (id) {
case R.id.action_settings:
return true;
case R.id.action_login:
sessionManager.checkLogin();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
/*
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
*/
@Override
public void onPause(){
LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
super.onPause();
DbProductos admin = new DbProductos(this,"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase(); //Create and/or open a database that will be used for reading and writing.
bd.execSQL("DELETE FROM productos ");
admin.close();
//Nuestro código a ejecutar en este momento
}
@Override
protected void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
new IntentFilter(QuickstartPreferences.REGISTRATION_COMPLETE));
}
//hace click en el fragmento y haga esto
@Override
public void onButtonClick() {
if (fragments != null) {
//new HttpRequestTask(this).execute();
Intent i = new Intent (this, ActivityMaps.class);
this.startActivity(i);
}
}
//metodos para escuchar la bsuqueda
@Override
public boolean onQueryTextSubmit(String s) {
Toast.makeText(this, s, Toast.LENGTH_LONG).show();
return false;
// return false;
}
@Override
public boolean onQueryTextChange(String s) {
fragments.ponerBusqueda(s);
return false;
//return true;
}
@Override
public void onBusqueda(String cadena) {
this.onQueryTextChange(cadena);
}
@Override
public void onConnected(Bundle bundle) {
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(1000);//update location every second
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
Log.i(LOG_TAG, "Conexion fue suspendida");
}
@Override
protected void onStart(){
super.onStart();
googleApiClient.connect();
}
@Override
protected void onStop(){
if(googleApiClient.isConnected())
googleApiClient.disconnect();
super.onStop();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(LOG_TAG, "Conexion fallo");
}
@Override
public void onLocationChanged(Location location) {
Log.i(LOG_TAG,location.toString());
}
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
}